# 设置 CMake 的最低版本要求为 3.16
cmake_minimum_required(VERSION 3.16)

# 定义项目名称为 "MySBOT"，版本号为 0.1，使用的编程语言为 C++
project(MySBOT VERSION 0.1 LANGUAGES CXX)

# 启用自动 MOC，RCC 功能
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

# 指定 C++ 标准版本为 C++11，并要求编译器严格遵循该标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 查找并加载 Qt 模块
find_package(Qt6 REQUIRED COMPONENTS Core Quick QuickControls2 Widgets)

# 获取头文件列表
file(GLOB HEADERS
    *.h
    ./Inc/*.h
)

# 获取源文件列表
file(GLOB SOURCES
    *.c
    *.cpp
    ./Src/*.c
    ./Src/*.cpp
)

# 添加 Windows 平台的资源文件（例如图标、版本信息等）
enable_language("RC")
set(WIN_RESOURCES
    ${CMAKE_CURRENT_SOURCE_DIR}/win.rc
)

# 添加资源文件到项目中
qt_add_resources(RESOURCE
    resources.qrc
)

# 添加可执行文件，并包含资源文件
add_executable(${PROJECT_NAME} WIN32
    ${SOURCES}
    ${HEADERS}
    ${RESOURCE}
    ${WIN_RESOURCES}
)

# 添加头文件路径到项目中
target_include_directories(${PROJECT_NAME} PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${CMAKE_CURRENT_SOURCE_DIR}/Inc
)

# 链接所需的库
target_link_libraries(${PROJECT_NAME}
    PRIVATE
    dwmapi
    user32
    Qt6::Core
    Qt6::Quick
    Qt6::QuickControls2
    Qt6::Widgets
)

## 添加资源文件
#qt_add_qml_module(${PROJECT_NAME}
#    URI MySBOT
#    VERSION 1.0
#    QML_FILES
#        ./Qml/MainWindow.qml
#    RESOURCES
#        resources.qrc
#)

## 获取当前目录下所有的子目录的绝对路径
#file(GLOB CHILD_DIRS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*)

## 遍历子目录
#foreach(CHILD_DIR ${CHILD_DIRS})
#    # 获取子目录的绝对路径
#    set(ABS_CHILD_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${CHILD_DIR}")
#    # 在每个子目录中搜索 CMakeLists.txt 文件
#    if(EXISTS ${ABS_CHILD_DIR}/CMakeLists.txt)
#        add_subdirectory(${ABS_CHILD_DIR})
#    endif()
#endforeach()
